package org.ushio.speech_module.speech.chapter;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;

/**
 * @author 陈红
 *章节数据访问接口
 *提供章节(Chapter)的CRUD操作及关联查询
 */
@Mapper
public interface ChapterMapper {

    /**
     * 根据ID查询章节
     * @param chapterId 章节ID
     * @return 章节实体
     */
    Chapter findById(Long chapterId);

    /**
     * 查询所有章节
     * @return 章节列表
     */
    List<Chapter> findAll();

    /**
     * 新增章节
     * @param chapter 章节实体
     * @return 影响行数
     */
    int insert(Chapter chapter);

    /**
     * 更新章节信息
     * @param chapter 章节实体
     * @return 影响行数
     */
    int update(Chapter chapter);

    /**
     * 根据ID删除章节
     * @param chapterId 章节ID
     * @return 影响行数
     */
    int deleteById(Long chapterId);

    /**
     * 根据书籍ID查询章节列表
     * @param bookId 书籍ID
     * @return 章节列表
     */
    List<Chapter> findByBookId(Long bookId);

    /**
     * 统计章节下的句子数量
     * @param chapterId 章节ID
     * @return 句子数量
     */
    @Select("SELECT COUNT(*) FROM sentences WHERE chapter_id = #{chapterId}")
    int countSentencesByChapterId(Long chapterId);
}
